priority -50

#################################
# Snippets for the Lua language #
#################################
snippet #! "#!/usr/bin/env lua" b
#!/usr/bin/env lua
$0
endsnippet

snippet assert "Assertion" b
assert(${1:condition}`!p
if t[2]:
	snip.rv = ", "
else:
	snip.rv = ""
`${2:msg})
endsnippet

snippet !fun(ction)?! "New function" br
function ${1:new_function}(${2:args})
	<<>>
end
endsnippet

snippet forp "pair for loop" b
for ${1:name},${2:val} in pairs(${3:table_name}) do
	<<>>
end
endsnippet

snippet fori "ipair for foop" b
for ${1:idx},${2:val} in ipairs(${3:table_name}) do
	<<>>
end
endsnippet

snippet for "numeric for loop" b
for ${1:i}=${2:first},${3:last}${4/^..*/(?0:,:)/}${4:step} do
	<<>>
end
endsnippet

snippet do "do block"
do
	$0
end
endsnippet

snippet repeat "repeat loop" b
repeat
	$1
until $0
endsnippet

snippet "^(\s*)while\s" "while loop" r
`!p snip.rv=match.group(1)`while $1 do
	<<>>
end
endsnippet

snippet "(=\s*)fun" "x = function()" r
`!p snip.rv=match.group(1)`function($1)
	<<>>
end
endsnippet

snippet if "if statement" b
if $0 then
	<<>>
end
endsnippet

snippet else "if/else statement" b
else
	$0
endsnippet

snippet eliseif "if/elseif statement" b
elseif $0 then
	<<>>
endsnippet

snippet pcall "pcall statement" b
local ok, err = pcall(${1:your_function})
if not ok then
	handler(${2:ok, err})
${3:else
	success(${4:ok, err})
}end
endsnippet

snippet local "local x = 1" b
local $1 = $0
endsnippet

# =====================
# Custom snippets start
# =====================
snippet p "print something"
vim.print(${1:${VISUAL}})
endsnippet

snippet ,, "_" iA
_$0
endsnippet
# ===================
# Custom snippets end
# ===================

# vim:ft=snippets:
